import request from './request'
import { AxiosPromise } from 'axios'

/**
 * 新增-修改企业公告
 * @param {EnterpriseAPIRequest.Create} data - 请求参数
 */
export const enterpriseNoticeCreate = (
  data: EnterpriseAPIRequest.Create,
): AxiosPromise<APIResponse> => {
  return request({
    url: '/sys/notice/save',
    method: 'post',
    data,
  })
}

/**
 * 获取企业公告列表
 * @param {Object} data - 请求参数
 * @param {Number} data.limit - 一页显示多少条
 * @param {Number} data.page - 当前页码
 * @param {String} data.name - 搜索关键字
 */
export const getEnterpriseNoticeList = (data: {
  limit: number
  page: number
  name: string
}): AxiosPromise<EnterpriseNoticeAPIResponse.List> => {
  return request({
    url: '/sys/notice/getList',
    method: 'post',
    data,
  })
}

/**
 * 获取企业公告详情
 * @param {String} id - 公告id
 */
export const getEnterpriseNoticeDetail = (
  id: string,
): AxiosPromise<EnterpriseNoticeAPIResponse.Detail> => {
  return request({
    url: `/sys/notice/getDetail/${id}`,
    method: 'get',
  })
}

/**
 * 批量更改企业公告状态
 * @param {Array<string>} ids - 企业公告id集合
 * @param {Boolean} status - 启用/禁用状态
 */
export const updateEnterpriseNoticeStatusByIds = (
  ids: Array<string>,
  status: boolean,
): AxiosPromise<APIResponse> => {
  return request({
    url: '/sys/notice/updateDisabled',
    method: 'post',
    params: {
      status,
    },
    data: ids,
  })
}

/**
 * 批量删除企业公告
 * @param {Array<string>} ids - 企业公告id集合
 */
export const enterpriseNoticeDelByIds = (ids: Array<string>): AxiosPromise<APIResponse> => {
  return request({
    url: '/sys/notice/delete',
    method: 'delete',
    data: ids,
  })
}

/**
 * 批量更新企业公告置顶
 * @param {Array<string>} ids - 企业公告id集合
 * @param {Boolean} topUp - 是否置顶：false-否、true-是
 */
export const enterpriseNoticeChangeTopUpByIds = (
  ids: Array<string>,
  topUp: boolean,
): AxiosPromise<APIResponse> => {
  return request({
    url: '/sys/notice/updateTopUp',
    method: 'post',
    params: {
      topUp,
    },
    data: ids,
  })
}

/**
 * 批量更新企业公告可见类型
 * @param {Array<string>} ids - 企业公告id集合
 * @param {(1|2|3)} visibilityType - 共享范围：1-全部可见，2-网点可见，3-公司可见
 */
export const enterpriseNoticeChangeVisibleTypeByIds = (
  ids: Array<string>,
  visibilityType: 1 | 2 | 3,
): AxiosPromise<APIResponse> => {
  return request({
    url: '/sys/notice/updateVisibilityType',
    method: 'post',
    params: {
      visibilityType,
    },
    data: ids,
  })
}
